package Z.dailyExercise.May;

public class _238除自身以外数组的乘积 {
    /**
     * 借助额外的数组 分别计算前n 与后n 的乘积
     *
     * 优化版本：不使用额外的数组 用结果数组保存左侧乘积 右侧乘积用R整数来进行迭代
     * @param nums
     * @return
     */
    public int[] productExceptSelf(int[] nums) {
        int n = nums.length;
        int[] front = new int[nums.length];
        int[] back = new int[nums.length];

        front[0] = 1;
        for (int i=1;i<nums.length;i++){
            front[i] = front[i-1]*nums[i-1];
        }
        back[n-1] = 1;
        for (int i=nums.length-2;i>=0;i--){
            back[i] = back[i+1]*nums[i+1];
        }

        for (int i = 0; i < n; i++) {
            nums[i] = front[i]*back[i];

        }
        return nums;

    }
}
